package com.somiz.fournisseur;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;

import org.hibernate.Session;

import com.gest.util.FileDirectoryUtil;
import com.gest.util.ImagePanel;
import com.somiz.main.Control;
import com.somiz.main.Principal;
import com.tech.hibernate.HibernateUtil;

public class FournisseurForm extends JPanel {
	private JTextField T_nom;
	private JTextField T_lienImage;
	private JTextField T_adresse;
	private JTextField T_tel;
	private JTextField T_fax;
	private JTextField T_email;
	private JTextField T_siteweb;
	private ImagePanel imagePanel;
	private static String nomImage;
	private static Long fournisseurId;

	/**
	 * Create the panel.
	 */
	public FournisseurForm() {
		setLayout(null);

		JButton button = new JButton("");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (errForm().equals("")) {
					if (fournisseurId == null) {
						// creer
						Fournisseur fournisseur = new Fournisseur();
						fournisseur = FormVersFournisseur(fournisseur);
						Session session = HibernateUtil.getSessionFactory()
								.openSession();
						if (Control.getFournisseurDao().isExisteAvecNom(
								fournisseur, session)) {
							JOptionPane
									.showMessageDialog(
											null,
											"cette fournisseur existe deja dans votre base do donnees",
											"Erreur",
											JOptionPane.WARNING_MESSAGE);
						} else {
							Control.getFournisseurDao().Creer(fournisseur,
									session);
							fournisseurId = fournisseur.getId();
						}
						session.close();
					} else {
						// modif
						Session session = HibernateUtil.getSessionFactory()
								.openSession();
						Fournisseur fournisseur = new Fournisseur();
						fournisseur = FormVersFournisseur(fournisseur);

						if (Control.getFournisseurDao().isExisteAvecNom(
								fournisseur, session)) {
							if (fournisseurId.equals(Control
									.getFournisseurDao()
									.TrouverAvecNom(fournisseur, session)
									.getId())) {
								fournisseur = Control.getFournisseurDao()
										.TrouverAvecId(fournisseurId,
												fournisseur, session);
								fournisseur = FormVersFournisseur(fournisseur);

								Control.getFournisseurDao().modifier(
										fournisseur, session);
							} else {
								JOptionPane
										.showMessageDialog(
												null,
												"cette fournisseur existe deja dans votre base de donnees",
												"Erreur",
												JOptionPane.WARNING_MESSAGE);
							}

						} else {
							fournisseur = Control.getFournisseurDao()
									.TrouverAvecId(fournisseurId, fournisseur,
											session);
							fournisseur = FormVersFournisseur(fournisseur);
							Control.getFournisseurDao().modifier(fournisseur,
									session);
						}
						session.close();
					}
				} else {
					JOptionPane.showMessageDialog(null, errForm(), "Erreur",
							JOptionPane.WARNING_MESSAGE);
				}
			}
		});
		button.setIcon(new ImageIcon(FournisseurForm.class
				.getResource("/cc/black/png/save_icon&32.png")));
		button.setPreferredSize(new Dimension(50, 50));
		button.setMnemonic(KeyEvent.VK_ENTER);
		button.setBackground(Color.WHITE);
		button.setBounds(10, 11, 50, 50);
		add(button);

		JSeparator separator = new JSeparator();
		separator.setBounds(10, 81, 624, 2);
		add(separator);

		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBorder(new TitledBorder(UIManager
				.getBorder("TitledBorder.border"), "Marque :",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel.setBounds(10, 101, 393, 292);
		add(panel);

		JLabel lblNomDuFournisseur = new JLabel("Nom du fournisseur:");
		lblNomDuFournisseur.setBounds(29, 26, 124, 28);
		panel.add(lblNomDuFournisseur);

		T_nom = new JTextField();
		T_nom.setColumns(10);
		T_nom.setBounds(163, 23, 220, 34);
		panel.add(T_nom);

		T_adresse = new JTextField();
		T_adresse.setColumns(10);
		T_adresse.setBounds(163, 65, 220, 34);
		panel.add(T_adresse);

		JLabel lblAdresse = new JLabel("Adresse :");
		lblAdresse.setBounds(29, 68, 124, 28);
		panel.add(lblAdresse);

		T_tel = new JTextField();
		T_tel.setColumns(10);
		T_tel.setBounds(163, 106, 220, 34);
		panel.add(T_tel);

		JLabel lblTelephone = new JLabel("Telephone:");
		lblTelephone.setBounds(29, 109, 124, 28);
		panel.add(lblTelephone);

		T_fax = new JTextField();
		T_fax.setColumns(10);
		T_fax.setBounds(163, 151, 220, 34);
		panel.add(T_fax);

		JLabel lblFax = new JLabel("Fax :");
		lblFax.setBounds(29, 154, 124, 28);
		panel.add(lblFax);

		T_email = new JTextField();
		T_email.setColumns(10);
		T_email.setBounds(163, 196, 220, 34);
		panel.add(T_email);

		JLabel lblFax_1 = new JLabel("Email:");
		lblFax_1.setBounds(29, 199, 124, 28);
		panel.add(lblFax_1);

		T_siteweb = new JTextField();
		T_siteweb.setColumns(10);
		T_siteweb.setBounds(163, 241, 220, 34);
		panel.add(T_siteweb);

		JLabel lblSiteWeb = new JLabel("Site web :");
		lblSiteWeb.setBounds(29, 244, 124, 28);
		panel.add(lblSiteWeb);

		JPanel panel_1 = new JPanel();
		panel_1.setLayout(null);
		panel_1.setBorder(new LineBorder(new Color(0, 0, 0)));
		panel_1.setBounds(413, 126, 221, 225);
		add(panel_1);

		imagePanel = new ImagePanel();
		imagePanel.setBorder(new LineBorder(new Color(0, 0, 0)));
		imagePanel.setBackground(Color.WHITE);
		imagePanel.setBounds(36, 11, 149, 154);
		panel_1.add(imagePanel);

		T_lienImage = new JTextField();
		T_lienImage.setColumns(10);
		T_lienImage.setBounds(10, 176, 165, 28);
		panel_1.add(T_lienImage);

		JButton button_2 = new JButton("");
		button_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFileChooser chooser = new JFileChooser();
				int retour = chooser.showOpenDialog(Control.getPrincipal());
				if (retour == JFileChooser.APPROVE_OPTION) {
					T_lienImage.setText(chooser.getSelectedFile()
							.getAbsolutePath());
					nomImage = chooser.getSelectedFile().getName();
					imagePanel.loadImage(chooser.getSelectedFile()
							.getAbsolutePath());
				}
			}
		});
		button_2.setIcon(new ImageIcon(FournisseurForm.class
				.getResource("/cc/black/png/zoom_icon&16.png")));
		button_2.setPreferredSize(new Dimension(50, 50));
		button_2.setMnemonic(KeyEvent.VK_ENTER);
		button_2.setBackground(Color.WHITE);
		button_2.setBounds(185, 176, 26, 28);
		panel_1.add(button_2);

		JButton button_3 = new JButton("");
		button_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Session session = HibernateUtil.getSessionFactory()
						.openSession();
				Control.getFournisseurForm().vider();
				Control.getPrincipal()
						.getTabbedPane()
						.addTab("Fournisseur",
								new ImageIcon(
										Principal.class
												.getResource("/cc/black/png/cert_icon&16.png")),
								Control.getFournisseurForm(), null);
				Control.getPrincipal()
						.getTabbedPane()
						.setSelectedIndex(
								Control.getPrincipal().getTabbedPane()
										.getTabCount() - 1);
				session.close();
			}
		});
		button_3.setIcon(new ImageIcon(FournisseurForm.class
				.getResource("/images/png/Add32.png")));
		button_3.setPreferredSize(new Dimension(50, 50));
		button_3.setMnemonic(KeyEvent.VK_ENTER);
		button_3.setBackground(Color.WHITE);
		button_3.setBounds(70, 11, 50, 50);
		add(button_3);

	}

	public void FournisseurVerForm(Fournisseur fournisseur) {
		T_adresse.setText(fournisseur.getAdresse());
		T_email.setText(fournisseur.getEmail());
		T_fax.setText(fournisseur.getFax());
		T_lienImage.setText(fournisseur.getLienImage());
		T_nom.setText(fournisseur.getNom());
		T_siteweb.setText(fournisseur.getSiteWeb());
		T_tel.setText(fournisseur.getTel());
		imagePanel.loadImage(fournisseur.getLienImage());
	}

	public Fournisseur FormVersFournisseur(Fournisseur fournisseur) {
		fournisseur.setAdresse(T_adresse.getText());
		fournisseur.setEmail(T_email.getText());
		fournisseur.setFax(T_fax.getText());
		fournisseur.setNom(T_nom.getText());
		fournisseur.setSiteWeb(T_siteweb.getText());
		fournisseur.setTel(T_tel.getText());
		if (!T_lienImage.getText().toString()
				.equals("images/imageDefaut/default.png")) {
			fournisseur.setLienImage(T_lienImage.getText());
			fournisseur.setLienImage("images/imageFournisseurs/" + nomImage);
			FileDirectoryUtil.copyFile(T_lienImage.getText(),
					"images/imageFournisseurs/" + nomImage);
		} else {
			fournisseur.setLienImage(T_lienImage.getText());
		}
		return fournisseur;
	}

	public void vider() {
		T_adresse.setText("");
		T_email.setText("");
		T_fax.setText("");
		T_lienImage.setText("images/imageDefaut/default.png");
		imagePanel.loadImage("images/imageDefaut/default.png");
		T_nom.setText("");
		T_siteweb.setText("");
		T_tel.setText("");
		fournisseurId = null;
	}

	public String errForm() {
		String err = "";
		if (T_nom.getText().equals("")) {
			err = err + "- il faut donner un nom pour le fournisseur \n";
		}
		return err;
	}

	public static final Long getFournisseurId() {
		return fournisseurId;
	}

	public static final void setFournisseurId(Long fournisseurId) {
		FournisseurForm.fournisseurId = fournisseurId;
	}

}
